La gestione dei file. Visualizzazione di una directory

Il PHP, come vedremo, è in grado di gestire in modo semplice e completo i file del sistema; e cioè in grado di visualizzare il contenuto di una directory qualsiasi, creare un nuovo file,aprirlo ed inserire ulteriori dati, copiarlo, cancellarlo e rinominarlo. Adesso vedremo passo passo come eseguire tutte queste operazioni elencate.
Aprire una directory qualsiasi sembra la più facile di tutte le operazioni sopra descritte invece è la più complicata e vediamo perché:
Apriamo come sempre il nostro Blocco Note per la scrittura dei file PHP e HTML e cominciamo a scrivere il seguente blocco:

<?
  $nomedir = "/Cartella/";
  $dir = opendir($nomedir);
  $elenco = "<ul>";
   while ($nomefile = readdir($dir))
     { if (($nomefile != ".") || ($nomefile != ".."))
         { $elenco .= "<li>$nomefile"; }
     $elenco .= "</ul>";
   closedir($dir);
?>

<html><head><title>Elenco di una directory</title></head>
<body>
<p>Elenco dei file contenuti nella directory <? echo "$nomedir"; ?>
<p><? echo "$elenco"; ?>
</body>
</html>

A prima vista non sembra poi così complicato da comprendere, specie per chi ha già una certa dimestichezza con i linguaggi C e C++.
In pratica non abbiamo fatto altro che dichiarare una variabile che contiene il percorso della directory da visualizzare, omettendo il nome del drive in quanto, nel mio caso, l'hard disk ha un unica partizione, denominata C; nel caso vi siano più partizioni nel disco fisso indicare la lettera del drive da utilizzare (anche la stessa C).
Creiamo una semplice cartella qualsiasi in C, per evitare percorsi lunghi e tortuosi, e con la variabile d'appoggio di nome $dir apriamo la nostra cartella con la funzione opendir(); la variabile $nomefile, tramite un ciclo, "preleverà" i nomi dei file e delle eventuali sottodirectory contenute in essa aggiungendole alla variabile $elenco, che ne memorizzerà il contenuto. Naturalmente avrete notato la condizione del ciclo che impedisce di prelevare directory chiamate "." (punto) e ".." (doppio punto), comprensibili per chi ha una certa manualità con MS-DOS,  in quanto esse rappresentano directory "di servizio", e non consultabili, delle cartelle create. Avrete anche notato che la variabile $elenco è stata impostata in modo da essere visualizzata sotto forma di elenco puntato in modo da ottenere un certo ordine dei file elencati.
Infine, come previsto da qualsiasi procedura di gestione dei file, abbiamo chiuso la nostra cartella con l'istruzione closedir(), in quanto la mancata chiusura di un file o una directory al termine di qualsiasi operazione eseguita in essi potrebbe comportare il danneggiamento o la perdita dei dati all'atto dello spegnimento del nostro PC.
Concludiamo con il codice HTML per la visualizzazione delle operazioni descritte.